const { pool } = require('../config/db');
const fs = require('fs');
const path = require('path');

/**
 * 初始化武器装备数据表
 */
async function initWeaponTables() {
  try {
    console.log('开始初始化武器装备数据表...\n');

    // 读取数据库表结构SQL文件
    const sqlFile = path.join(__dirname, '../config/database.sql');
    const sqlContent = fs.readFileSync(sqlFile, 'utf8');

    // 提取武器装备相关的表创建语句
    const weaponTables = [
      'raw_weapons',
      'processed_weapons',
      'weapon_specifications',
      'weapon_users'
    ];

    for (const tableName of weaponTables) {
      try {
        // 检查表是否已存在
        const [rows] = await pool.execute(
          `SHOW TABLES LIKE '${tableName}'`
        );

        if (rows.length > 0) {
          console.log(`✓ 表 ${tableName} 已存在，跳过创建`);
          continue;
        }

        // 从SQL文件中提取该表的创建语句
        const regex = new RegExp(
          `CREATE TABLE IF NOT EXISTS \`${tableName}\`[\\s\\S]*?(?=CREATE TABLE|$)`,
          'i'
        );
        const match = sqlContent.match(regex);

        if (match) {
          const createTableSQL = match[0].trim();
          await pool.execute(createTableSQL);
          console.log(`✓ 表 ${tableName} 创建成功`);
        } else {
          console.warn(`⚠ 未找到表 ${tableName} 的创建语句`);
        }
      } catch (error) {
        console.error(`✗ 创建表 ${tableName} 失败:`, error.message);
        throw error;
      }
    }

    console.log('\n武器装备数据表初始化完成！');
    process.exit(0);
  } catch (error) {
    console.error('\n初始化失败:', error.message);
    process.exit(1);
  }
}

// 执行初始化
initWeaponTables();

